XWPFDocument: Word ডকুমেন্ট তৈরি এবং ব্যবস্থাপনা

Java Technologies - অ্যাপাচি পিওআই (ওয়ার্ড)
161
161

Apache POI এর XWPFDocument ক্লাসটি ব্যবহার করে আপনি Microsoft Word (DOCX) ডকুমেন্ট তৈরি, পড়া, এবং সংশোধন করতে পারেন। XWPF (XML Word Processor Format) হল সেই API যা DOCX ফরম্যাটের ফাইলগুলো পরিচালনা করার জন্য ব্যবহৃত হয়।

এখানে XWPFDocument এর মাধ্যমে Word ডকুমেন্ট তৈরি এবং বিভিন্ন উপাদান যেমন প্যারাগ্রাফ, টেবিল, টেক্সট ফরম্যাটিং এবং চিত্র যোগ করার পদ্ধতি দেখানো হয়েছে।

১. নতুন Word ডকুমেন্ট তৈরি করা

XWPFDocument ব্যবহার করে একটি নতুন Word ডকুমেন্ট তৈরি করা যায়। নিচে একটি সহজ উদাহরণ দেওয়া হয়েছে:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.FileOutputStream;
import java.io.IOException;

public class CreateWordDocument {
    public static void main(String[] args) throws IOException {
        // নতুন ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();
        
        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        paragraph.createRun().setText("Hello, this is a new Word document created using Apache POI.");

        // ডকুমেন্টটি সেভ করা
        try (FileOutputStream out = new FileOutputStream("created_document.docx")) {
            document.write(out);
        }

        System.out.println("Word ডকুমেন্ট তৈরি করা হয়েছে!");
    }
}

এখানে, createParagraph() মেথডের মাধ্যমে একটি নতুন প্যারাগ্রাফ তৈরি করা হয়েছে এবং createRun() মেথড ব্যবহার করে টেক্সট যোগ করা হয়েছে। পরিশেষে, write() মেথডের মাধ্যমে ডকুমেন্টটি একটি ফাইলে সেভ করা হয়েছে।


২. টেক্সট ফরম্যাটিং করা

XWPFDocument এর মাধ্যমে আপনি Word ডকুমেন্টে টেক্সট ফরম্যাটিং (যেমন bold, italic, underline, font size, font color) করতে পারেন।

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.FileOutputStream;
import java.io.IOException;

public class StyleTextInWord {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        
        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        
        // টেক্সট যোগ এবং ফরম্যাট করা
        run.setText("This is bold, italic, and underlined text.");
        run.setBold(true);   // bold
        run.setItalic(true); // italic
        run.setUnderline(true); // underline
        run.setFontSize(16); // font size
        run.setFontColor("FF5733"); // font color (hex)
        
        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("styled_document.docx")) {
            document.write(out);
        }

        System.out.println("Styled Word ডকুমেন্ট তৈরি হয়েছে!");
    }
}

এখানে, setBold(), setItalic(), setUnderline(), setFontSize(), এবং setFontColor() মেথড ব্যবহার করে টেক্সট ফরম্যাটিং করা হয়েছে।


৩. প্যারাগ্রাফ এবং এলাইনমেন্ট কাস্টমাইজ করা

XWPFDocument এর মাধ্যমে আপনি প্যারাগ্রাফের alignment, spacing, এবং indentation সেট করতে পারেন।

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.FileOutputStream;
import java.io.IOException;

public class CustomizeParagraph {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        
        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        
        // প্যারাগ্রাফে টেক্সট যোগ করা
        paragraph.createRun().setText("This is a left-aligned paragraph.");
        
        // প্যারাগ্রাফের alignment সেট করা
        paragraph.setAlignment(org.apache.poi.xwpf.usermodel.ParagraphAlignment.LEFT);
        
        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("paragraph_alignment.docx")) {
            document.write(out);
        }

        System.out.println("Paragraph Alignment Word ডকুমেন্ট তৈরি হয়েছে!");
    }
}

এখানে, setAlignment() মেথড ব্যবহার করে প্যারাগ্রাফের alignment (যেমন LEFT, CENTER, RIGHT) সেট করা হয়েছে।


৪. টেবিল তৈরি এবং কাস্টমাইজ করা

Word ডকুমেন্টে টেবিল তৈরি করা সম্ভব XWPFDocument ব্যবহার করে। নিচে টেবিল তৈরি এবং কাস্টমাইজ করার একটি উদাহরণ দেওয়া হলো:

import org.apache.poi.xwpf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class CreateTableInWord {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        
        // একটি টেবিল তৈরি করা (2 রো এবং 3 কলাম)
        XWPFTable table = document.createTable(2, 3);
        
        // টেবিলের প্রথম রোতে টেক্সট যোগ করা
        XWPFTableRow row = table.getRow(0);
        row.getCell(0).setText("Header 1");
        row.getCell(1).setText("Header 2");
        row.getCell(2).setText("Header 3");
        
        // টেবিলের দ্বিতীয় রোতে টেক্সট যোগ করা
        row = table.getRow(1);
        row.getCell(0).setText("Data 1");
        row.getCell(1).setText("Data 2");
        row.getCell(2).setText("Data 3");
        
        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("table_document.docx")) {
            document.write(out);
        }

        System.out.println("Word ডকুমেন্টে টেবিল তৈরি করা হয়েছে!");
    }
}

এখানে, createTable() মেথডের মাধ্যমে একটি টেবিল তৈরি করা হয়েছে, এবং getRow()getCell() মেথড ব্যবহার করে টেবিলের সেলে টেক্সট যোগ করা হয়েছে।


৫. চিত্র যোগ করা

আপনি Word ডকুমেন্টে চিত্রও যোগ করতে পারেন। নিচে একটি চিত্র যোগ করার উদাহরণ দেওয়া হলো:

import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class AddImageToWord {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        
        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        
        // চিত্র যোগ করা
        String imagePath = "image.jpg";
        XWPFPictureData pictureData = document.addPictureData(new FileInputStream(imagePath), XWPFDocument.PICTURE_TYPE_JPEG);
        XWPFPicture picture = paragraph.createRun().addPicture(pictureData, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(100), Units.toEMU(100));  // 100x100 pixels
        
        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("image_in_document.docx")) {
            document.write(out);
        }

        System.out.println("Word ডকুমেন্টে চিত্র যোগ করা হয়েছে!");
    }
}

এখানে, addPictureData() মেথডের মাধ্যমে একটি চিত্র DOCX ডকুমেন্টে যোগ করা হয়েছে।


সারাংশ

XWPFDocument এর মাধ্যমে আপনি সহজে Word ডকুমেন্ট তৈরি এবং সম্পাদনা করতে পারেন। এতে প্যারাগ্রাফ, টেবিল, চিত্র যোগ করা, টেক্সট ফরম্যাটিং এবং alignment কাস্টমাইজ করা সম্ভব। এছাড়া, চিত্র যোগ এবং টেবিল ম্যানিপুলেশনসহ অন্যান্য প্রক্রিয়া করতে আপনি XWPF API ব্যবহার করতে পারেন, যা ডকুমেন্ট তৈরির কার্যকরী এবং শক্তিশালী উপায় প্রদান করে।

common.content_added_by

XWPFDocument এর মাধ্যমে Word ডকুমেন্ট তৈরি করা

118
118

Apache POI লাইব্রেরির XWPFDocument ক্লাস ব্যবহার করে আপনি সহজেই Word ডকুমেন্ট (.docx ফাইল) তৈরি করতে পারেন। এই ক্লাসটি Apache POI's XWPF (XML Word Processing Format) এর অংশ এবং এটি মূলত Microsoft Word 2007 এবং তার পরবর্তী সংস্করণের .docx ফাইল ফরম্যাটের জন্য ব্যবহৃত হয়। XWPFDocument ক্লাসটি প্যারাগ্রাফ, টেবিল, ছবি, শিরোনাম, এবং আরও অনেক উপাদান তৈরি ও সম্পাদনা করার ক্ষমতা প্রদান করে।

এখানে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে XWPFDocument ক্লাস ব্যবহার করে একটি নতুন Word ডকুমেন্ট তৈরি করা হয়েছে।


1. সাধারণ Word ডকুমেন্ট তৈরি করা

কোড উদাহরণ:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.FileOutputStream;
import java.io.IOException;

public class CreateWordDocument {
    public static void main(String[] args) throws IOException {
        // নতুন XWPFDocument (Word ডকুমেন্ট) তৈরি
        XWPFDocument document = new XWPFDocument();

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // প্যারাগ্রাফে টেক্সট যোগ করা
        XWPFRun run = paragraph.createRun();
        run.setText("Hello, this is a Word document created using Apache POI!");

        // Word ডকুমেন্ট ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("example_word_document.docx")) {
            document.write(out);
        }

        System.out.println("Word ফাইল সফলভাবে তৈরি হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • XWPFDocument: এটি একটি নতুন Word ডকুমেন্ট তৈরি করে।
  • createParagraph(): নতুন একটি প্যারাগ্রাফ তৈরি করে।
  • createRun(): টেক্সট যোগ করতে ব্যবহৃত হয়। এটি প্যারাগ্রাফের মধ্যে একক স্টাইলের টেক্সট রেন্ডার করে।
  • setText(): প্যারাগ্রাফে টেক্সট ইনসার্ট করে।
  • FileOutputStream: তৈরি হওয়া ডকুমেন্টটিকে নির্দিষ্ট ফাইলের মধ্যে সেভ করে।

এই কোডটি চালানোর পর, example_word_document.docx নামক একটি নতুন Word ডকুমেন্ট তৈরি হবে, যেখানে একটি প্যারাগ্রাফ থাকবে এবং সেটির মধ্যে টেক্সট থাকবে: "Hello, this is a Word document created using Apache POI!"


2. Word ডকুমেন্টে ফন্ট, সাইজ, এবং স্টাইল পরিবর্তন করা

আপনি XWPFRun এর মাধ্যমে ফন্টের স্টাইল, সাইজ, এবং অন্যান্য ফরম্যাটিং পরিবর্তন করতে পারেন।

কোড উদাহরণ:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.FileOutputStream;
import java.io.IOException;

public class StyledWordDocument {
    public static void main(String[] args) throws IOException {
        // নতুন XWPFDocument (Word ডকুমেন্ট) তৈরি
        XWPFDocument document = new XWPFDocument();

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // টেক্সট যোগ করা এবং তার স্টাইল পরিবর্তন করা
        XWPFRun run = paragraph.createRun();
        run.setText("Hello, this is a styled Word document!");
        run.setFontSize(14); // ফন্ট সাইজ ১৪
        run.setBold(true);  // বোল্ড ফন্ট
        run.setItalic(true); // ইটালিক ফন্ট
        run.setFontFamily("Arial"); // ফন্ট ফ্যামিলি

        // Word ডকুমেন্ট ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("styled_word_document.docx")) {
            document.write(out);
        }

        System.out.println("Styled Word ফাইল সফলভাবে তৈরি হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • setFontSize(14): ফন্টের সাইজ ১৪ পয়েন্টে সেট করে।
  • setBold(true): টেক্সটকে বোল্ড স্টাইলে পরিবর্তন করে।
  • setItalic(true): টেক্সটকে ইটালিক স্টাইলে পরিবর্তন করে।
  • setFontFamily("Arial"): ফন্টের ফ্যামিলি Arial সেট করে।

এই কোডের মাধ্যমে আপনি একটি সজ্জিত Word ডকুমেন্ট তৈরি করতে পারবেন, যেখানে টেক্সট বোল্ড এবং ইটালিক স্টাইলের হবে।


3. Word ডকুমেন্টে টেবিল যোগ করা

XWPFDocument ক্লাসের মাধ্যমে আপনি Word ডকুমেন্টে টেবিল যোগ করতে পারেন।

কোড উদাহরণ:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import java.io.FileOutputStream;
import java.io.IOException;

public class CreateTableInWord {
    public static void main(String[] args) throws IOException {
        // নতুন XWPFDocument (Word ডকুমেন্ট) তৈরি
        XWPFDocument document = new XWPFDocument();

        // টেবিল তৈরি করা
        XWPFTable table = document.createTable();

        // প্রথম সারি তৈরি
        XWPFTableRow row = table.getRow(0);
        XWPFTableCell cell1 = row.getCell(0);
        cell1.setText("Cell 1");

        // দ্বিতীয় সারি তৈরি
        XWPFTableRow row2 = table.createRow();
        XWPFTableCell cell2 = row2.getCell(0);
        cell2.setText("Cell 2");

        // Word ডকুমেন্ট ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("word_document_with_table.docx")) {
            document.write(out);
        }

        System.out.println("Word ডকুমেন্টে টেবিল সফলভাবে তৈরি হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • createTable(): একটি নতুন টেবিল তৈরি করে।
  • createRow(): নতুন একটি সারি তৈরি করে।
  • getCell(): সারিতে একটি নির্দিষ্ট সেল নির্বাচন করে এবং এতে টেক্সট যোগ করে।

এই কোডটি চালানোর পর একটি Word ডকুমেন্ট তৈরি হবে যেখানে একটি টেবিল থাকবে।


সারাংশ

XWPFDocument ক্লাস ব্যবহার করে আপনি সহজেই Word ডকুমেন্ট তৈরি, সম্পাদনা, টেক্সট যোগ, ফন্ট স্টাইল পরিবর্তন, এবং টেবিল যোগ করতে পারেন। এটি Apache POI লাইব্রেরির একটি গুরুত্বপূর্ণ অংশ, যা .docx ফাইল ফরম্যাটের সাথে কাজ করার জন্য অত্যন্ত কার্যকরী। আপনার প্রয়োজন অনুসারে আপনি আরও বিভিন্ন ধরণের কাস্টমাইজেশন এবং ফরম্যাটিং করতে পারবেন।


common.content_added_by

বিদ্যমান Word ডকুমেন্ট ওপেন এবং সম্পাদনা করা

112
112

Apache POI এর মাধ্যমে আপনি বিদ্যমান Microsoft Word ডকুমেন্ট ওপেন এবং সেগুলোর মধ্যে প্রয়োজনীয় সম্পাদনা করতে পারেন। এটি আপনাকে .doc এবং .docx ফরম্যাটের ডকুমেন্ট পড়া, সম্পাদনা করা, নতুন কনটেন্ট যোগ করা, এবং ডকুমেন্টের ফরম্যাট পরিবর্তন করার সুবিধা প্রদান করে। আপনি যেমন টেবিল যোগ করতে পারেন, টেক্সট পরিবর্তন করতে পারেন, প্যারাগ্রাফ এবং রুন স্টাইল করতে পারেন, কিংবা চিত্র ও গ্রাফিক্স সংযোজন করতে পারেন।

এই প্রক্রিয়ায়, আপনি বিদ্যমান ডকুমেন্টে প্রোগ্রাম্যাটিকভাবে বিভিন্ন পরিবর্তন করতে পারবেন, যেমন:

  • টেক্সট বা প্যারাগ্রাফ পরিবর্তন
  • নতুন পৃষ্ঠা যোগ করা
  • টেবিল, চিত্র বা লিস্ট যোগ করা
  • ফন্ট স্টাইল এবং সাইজ পরিবর্তন
  • হেডিং এবং ফুটার পরিবর্তন

এখানে, আমরা একটি বিদ্যমান .docx ফাইল ওপেন করার এবং সেটিতে কিছু সাধারণ পরিবর্তন করার উদাহরণ দেখবো।


বিদ্যমান Word ডকুমেন্ট ওপেন করা

প্রথমে, আমরা একটি বিদ্যমান Word ডকুমেন্ট ওপেন করবো এবং সেটি সম্পাদনা করার জন্য প্রস্তুত করবো। নিচের কোডে আমরা একটি .docx ফাইল ওপেন করব:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class EditExistingWordDocument {
    public static void main(String[] args) throws IOException {
        // বিদ্যমান ডকুমেন্ট ওপেন করা
        FileInputStream fileInputStream = new FileInputStream("existingDocument.docx");
        XWPFDocument document = new XWPFDocument(fileInputStream);

        // নতুন প্যারাগ্রাফ তৈরি এবং এতে টেক্সট যোগ করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        run.setText("This is the newly added text in the existing Word document.");

        // ডকুমেন্ট সংরক্ষণ
        try (FileOutputStream out = new FileOutputStream("UpdatedDocument.docx")) {
            document.write(out);
        }

        System.out.println("বিদ্যমান ডকুমেন্ট সফলভাবে সম্পাদিত হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • FileInputStream: এটি বিদ্যমান Word ডকুমেন্ট ওপেন করতে ব্যবহৃত হয়।
  • XWPFDocument: Word ডকুমেন্টের জন্য প্রধান অবজেক্ট।
  • createParagraph(): নতুন প্যারাগ্রাফ তৈরি করা।
  • createRun(): প্যারাগ্রাফের মধ্যে নতুন টেক্সট যোগ করা।

এই কোডটি existingDocument.docx নামক বিদ্যমান ডকুমেন্ট ওপেন করবে এবং সেখানে একটি নতুন প্যারাগ্রাফ যোগ করবে। তারপর এটি UpdatedDocument.docx নামে নতুন ডকুমেন্ট হিসেবে সংরক্ষণ করবে।


বিদ্যমান Word ডকুমেন্টে টেক্সট সম্পাদনা করা

বিদ্যমান ডকুমেন্টে কিছু বিশেষ টেক্সট পরিবর্তন করার জন্য, আপনি ডকুমেন্টের প্যারাগ্রাফগুলোর মধ্যে সার্চ করে সেই প্যারাগ্রাফ বা রুন পরিবর্তন করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

public class ModifyExistingText {
    public static void main(String[] args) throws IOException {
        FileInputStream fileInputStream = new FileInputStream("existingDocument.docx");
        XWPFDocument document = new XWPFDocument(fileInputStream);

        // সমস্ত প্যারাগ্রাফ পড়া
        List<XWPFParagraph> paragraphs = document.getParagraphs();

        // প্রথম প্যারাগ্রাফে টেক্সট পরিবর্তন
        if (!paragraphs.isEmpty()) {
            XWPFParagraph firstParagraph = paragraphs.get(0);
            XWPFRun run = firstParagraph.getRuns().get(0);  // প্রথম রান নির্বাচন
            run.setText("This is the updated text in the first paragraph.");
        }

        // ডকুমেন্ট সংরক্ষণ
        try (FileOutputStream out = new FileOutputStream("UpdatedTextDocument.docx")) {
            document.write(out);
        }

        System.out.println("টেক্সট সফলভাবে পরিবর্তন করা হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • getParagraphs(): ডকুমেন্টের সমস্ত প্যারাগ্রাফের তালিকা নেয়।
  • getRuns(): প্যারাগ্রাফের মধ্যে সমস্ত রান ফেরত দেয়। একটি রান সাধারণত একটি টেক্সটের অংশ।
  • setText(): রান এর টেক্সট পরিবর্তন করার জন্য ব্যবহৃত।

এই কোডটি ডকুমেন্টের প্রথম প্যারাগ্রাফের টেক্সট পরিবর্তন করবে এবং নতুন ডকুমেন্টে সেই পরিবর্তন সংরক্ষণ করবে।


বিদ্যমান Word ডকুমেন্টে টেবিল যোগ করা

যদি আপনার ডকুমেন্টে নতুন একটি টেবিল যোগ করতে চান, তাহলে আপনি নিম্নলিখিত কোড ব্যবহার করতে পারেন:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class AddTableToExistingDocument {
    public static void main(String[] args) throws IOException {
        FileInputStream fileInputStream = new FileInputStream("existingDocument.docx");
        XWPFDocument document = new XWPFDocument(fileInputStream);

        // একটি নতুন টেবিল তৈরি করা
        XWPFTable table = document.createTable();

        // প্রথম রো তৈরি এবং সেল যোগ করা
        XWPFTableRow row = table.getRow(0);
        XWPFTableCell cell1 = row.getCell(0);
        XWPFTableCell cell2 = row.createCell();
        cell1.setText("Cell 1");
        cell2.setText("Cell 2");

        // নতুন রো যোগ করা
        XWPFTableRow newRow = table.createRow();
        XWPFTableCell newCell1 = newRow.getCell(0);
        XWPFTableCell newCell2 = newRow.createCell();
        newCell1.setText("New Cell 1");
        newCell2.setText("New Cell 2");

        // ডকুমেন্ট সংরক্ষণ
        try (FileOutputStream out = new FileOutputStream("UpdatedDocumentWithTable.docx")) {
            document.write(out);
        }

        System.out.println("টেবিল সফলভাবে যোগ করা হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • createTable(): একটি নতুন টেবিল তৈরি করে।
  • createRow(): একটি নতুন রো (সারি) তৈরি করে।
  • createCell(): একটি সেল তৈরি করে।

এই কোডটি একটি নতুন টেবিল যোগ করবে এবং সেলগুলোর মধ্যে কিছু টেক্সট সংযোজন করবে।


সারাংশ

Apache POI ব্যবহার করে বিদ্যমান Microsoft Word ডকুমেন্ট ওপেন এবং সম্পাদনা করা খুবই সহজ। আপনি টেক্সট পরিবর্তন, টেবিল যোগ করা, প্যারাগ্রাফ এবং রুনের স্টাইল কাস্টমাইজেশন, নতুন প্যারাগ্রাফ বা চিত্র যোগ করা ইত্যাদি কাজ করতে পারবেন। POI এর API সরল এবং পরিষ্কার, যা Java ডেভেলপারদের জন্য কার্যকরী এবং সময় সাশ্রয়ী। এই ধরনের ম্যানিপুলেশন ডকুমেন্ট জেনারেশন এবং কাস্টমাইজেশন প্রক্রিয়া অনেক সহজ করে তোলে।

common.content_added_by

ডকুমেন্ট ফাইল সংরক্ষণ (save) করা

129
129

অ্যাপাচি পিওআই (Apache POI) ব্যবহার করে Word ডকুমেন্ট (যেমন .docx ফাইল) তৈরি করার পর, সেই ডকুমেন্টটি সঠিকভাবে সংরক্ষণ (save) করা অত্যন্ত গুরুত্বপূর্ণ। এটি করার জন্য, XWPFDocument ক্লাসটি ব্যবহৃত হয়, যার মাধ্যমে আপনি একটি Word ডকুমেন্ট তৈরি এবং তার বিভিন্ন উপাদান যেমন টেক্সট, টেবিল, ছবি, ইত্যাদি যোগ করতে পারেন। এরপর, এই ডকুমেন্টটি ফাইল সিস্টেমে সংরক্ষণ করার জন্য FileOutputStream ব্যবহার করা হয়।

এখানে একটি সাধারণ উদাহরণ দেওয়া হলো, যা Apache POI ব্যবহার করে Word ডকুমেন্ট সংরক্ষণ (save) করার প্রক্রিয়াটি ব্যাখ্যা করে।


ডকুমেন্ট ফাইল সংরক্ষণ (Save) করার উদাহরণ

কোড উদাহরণ:

import org.apache.poi.xwpf.usermodel.*;

import java.io.*;

public class SaveWordDocumentExample {
    public static void main(String[] args) throws IOException {
        // নতুন একটি Word ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // একটি প্যারাগ্রাফ তৈরি করা এবং টেক্সট যোগ করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        run.setText("Hello, Apache POI! This is a sample Word document.");
        run.setBold(true);  // বোল্ড টেক্সট

        // একটি টেবিল তৈরি করা
        XWPFTable table = document.createTable();
        XWPFTableRow row = table.getRow(0);
        row.getCell(0).setText("Column 1");
        row.addNewTableCell().setText("Column 2");

        // Word ডকুমেন্টটি সংরক্ষণ করা
        try (FileOutputStream out = new FileOutputStream("sample_word_document.docx")) {
            // ডকুমেন্টটি ফাইল আউটপুট স্ট্রিমে লেখা
            document.write(out);
        }

        System.out.println("ডকুমেন্ট সফলভাবে সংরক্ষিত হয়েছে!");
    }
}

কোডের ব্যাখ্যা:

  1. XWPFDocument তৈরি:
    • XWPFDocument ক্লাস ব্যবহার করে নতুন একটি Word ডকুমেন্ট তৈরি করা হয়।
  2. প্যারাগ্রাফ যোগ করা:
    • createParagraph() মেথড ব্যবহার করে একটি নতুন প্যারাগ্রাফ তৈরি করা হয়।
    • XWPFRun ক্লাসের setText() মেথড ব্যবহার করে প্যারাগ্রাফে টেক্সট যোগ করা হয় এবং setBold() মেথডের মাধ্যমে টেক্সট বোল্ড করা হয়।
  3. টেবিল তৈরি করা:
    • createTable() মেথড ব্যবহার করে একটি নতুন টেবিল তৈরি করা হয়। এরপর, getRow(0) মেথড দিয়ে প্রথম সারি তৈরি করা হয় এবং প্রতিটি সেলে টেক্সট প্রবেশ করা হয়।
  4. ডকুমেন্ট সংরক্ষণ (Save):
    • FileOutputStream ব্যবহার করে ডকুমেন্টটি sample_word_document.docx নামক ফাইলে সংরক্ষণ করা হয়।
    • document.write(out) মেথড ব্যবহার করে ডকুমেন্টটি আউটপুট স্ট্রিমে লেখা হয়।
  5. ফাইল সেভিং:
    • ডকুমেন্টটি ফাইল সিস্টেমে সংরক্ষণ হবে এবং কনসোলে "ডকুমেন্ট সফলভাবে সংরক্ষিত হয়েছে!" মেসেজ দেখাবে।

ফাইল সংরক্ষণের পদ্ধতি (Save Method)

ডকুমেন্টটি সংরক্ষণ করতে FileOutputStream এর মাধ্যমে ফাইলটি ওপেন করা হয় এবং পরে XWPFDocument.write() মেথড ব্যবহার করে ডকুমেন্টটি ফাইলে লেখা হয়। এই মেথডটি ফাইলটি সংরক্ষণ করবে এবং ডকুমেন্টের সমস্ত উপাদান, যেমন টেক্সট, টেবিল, ছবি, স্টাইল ইত্যাদি ফাইলের মধ্যে সেভ হবে।

FileOutputStream ব্যবহারের সুবিধা:

  • এটি একটি বাইনারি ফাইল স্ট্রিম, যা Java অ্যাপ্লিকেশনের মধ্যে ফাইল লিখতে সাহায্য করে।
  • সঠিক ফাইল পাথ এবং নাম প্রদান করলে, ডকুমেন্টটি সঠিকভাবে ফাইল সিস্টেমে সংরক্ষিত হবে।

নোট:

  • ফাইল পাথ: আপনি ফাইলের পাথ অনুযায়ী ডকুমেন্টটি সংরক্ষণ করতে পারেন। যদি নির্দিষ্ট ডিরেক্টরিতে ফাইলটি রাখতে চান, তাহলে সেই ডিরেক্টরি পাথ দিতে হবে।
  • ফাইল এক্সটেনশন: Word ডকুমেন্টের সঠিক এক্সটেনশন (.docx) দেওয়া অত্যন্ত গুরুত্বপূর্ণ, যাতে ফাইলটি সঠিক ফরম্যাটে সংরক্ষিত হয়।

সারাংশ

Apache POI ব্যবহার করে Word ডকুমেন্ট তৈরি করার পর, FileOutputStream এবং XWPFDocument.write() মেথড ব্যবহার করে ডকুমেন্টটি সঠিকভাবে সংরক্ষণ (save) করা যায়। এই প্রক্রিয়ার মাধ্যমে আপনি নতুন বা বিদ্যমান Word ফাইলগুলির মধ্যে টেক্সট, টেবিল, শেপ, ছবি, স্টাইল ইত্যাদি কাস্টমাইজ করে সেগুলিকে ফাইল সিস্টেমে সংরক্ষণ করতে পারেন।

common.content_added_by

ফাইল ফরম্যাট সমর্থন (DOCX, DOC)

169
169

Apache POI একটি শক্তিশালী ওপেন সোর্স লাইব্রেরি, যা Microsoft Office ফাইল ফরম্যাটগুলির ম্যানিপুলেশন করতে সক্ষম। বিশেষত, Microsoft Word ফাইল ফরম্যাটের জন্য POI দুটি প্রধান ক্লাস প্রদান করে: HWPF এবং XWPF। এই ক্লাস দুটি .doc এবং .docx ফরম্যাটের ফাইলের জন্য আলাদা আলাদা সমর্থন প্রদান করে।

DOCX (Word 2007 এবং পরবর্তী সংস্করণ)

.docx ফাইল ফরম্যাটটি Office Open XML (OOXML) ফরম্যাটে ভিত্তি করে তৈরি, যা Microsoft Word 2007 এবং পরবর্তী সংস্করণের জন্য ডিজাইন করা হয়েছে। এটি একটি আধুনিক এবং উন্নত ফরম্যাট যা XML ভিত্তিক, ফলে এটি অন্যান্য প্ল্যাটফর্মে সহজে এক্সপোর্ট এবং ইমপোর্ট করা যায়।

XWPF (XML Word Processing Format)

  • XWPF ক্লাসটি .docx ফাইলের জন্য ব্যবহৃত হয়। এটি POI লাইব্রেরির অন্যতম গুরুত্বপূর্ণ উপাদান, যা XML ফরম্যাটের Word ফাইলগুলির মধ্যে কন্টেন্ট রিড, রাইট, এবং ম্যানিপুলেট করতে সাহায্য করে।
  • XWPF ব্যবহারের মাধ্যমে আপনি Word ডকুমেন্টের প্যারাগ্রাফ, টেবিল, ইমেজ, শিরোনাম, তালিকা, স্টাইল এবং অন্যান্য অনেক ফিচার পরিচালনা করতে পারবেন।

DOCX ফাইলের সুবিধা:

  • XML ভিত্তিক হওয়ায় এই ফাইল ফরম্যাটে আরও বেশি ডেটা প্রক্রিয়াকরণ এবং স্টাইলিং এর সুবিধা রয়েছে।
  • এটি সঠিকভাবে ফাইলের কন্টেন্ট এবং ফরম্যাট বজায় রাখে এবং অনেকগুলি ফিচার যেমন টেবিল, চার্ট, গ্রাফিক্স, অ্যানিমেশন সমর্থন করে।
  • ওপেন সোর্স লাইব্রেরি যেমন POI এবং অন্যান্য টুলসের মাধ্যমে খুব সহজে এক্সপোর্ট এবং ইমপোর্ট করা যায়।

DOC (Word 97-2003 ফরম্যাট)

.doc ফরম্যাটটি Microsoft Word 97-2003 এর জন্য ব্যবহৃত ছিল এবং এটি একটি বাইনারি ফরম্যাট। এই ফাইলটি একটি পুরনো ফরম্যাট হওয়ায় আধুনিক প্ল্যাটফর্মে ব্যবহার করা কিছুটা সীমিত হতে পারে, তবে এখনও অনেক legacy সিস্টেমে এটি ব্যবহৃত হয়।

HWPF (Horrible Word Processing Format)

  • HWPF ক্লাসটি .doc ফরম্যাটের জন্য ব্যবহৃত হয়। এটি একটি পুরনো বাইনারি ফরম্যাটের জন্য ডিজাইন করা হয়েছে, যা বেশ কিছু সীমাবদ্ধতার কারণে আধুনিক ফিচার সমর্থন করে না। তবে, এটি এখনও কিছু পুরনো Word ডকুমেন্ট পড়তে এবং সম্পাদনা করতে ব্যবহৃত হয়।
  • HWPF এ ব্যবহৃত ফাইলের মধ্যে প্যারাগ্রাফ, টেবিল এবং সাধারণ স্টাইলিং কার্যাবলী করতে পারবেন, তবে গ্রাফিক্স এবং অ্যানিমেশন এর মতো উন্নত বৈশিষ্ট্যগুলি সীমিত।

DOC ফাইলের সীমাবদ্ধতা:

  • বাইনারি ফরম্যাট হওয়ায় এর মধ্যে সংরক্ষিত ডেটা এবং ফরম্যাটগুলোকে প্রক্রিয়াকরণ করা তুলনামূলকভাবে কঠিন।
  • আধুনিক ডকুমেন্ট ফিচার (যেমন: স্লাইড, গ্রাফ, অ্যানিমেশন) সম্পূর্ণরূপে সমর্থিত নয়।
  • অল্প জায়গায় ফাইল সাইজ বেশি হতে পারে এবং XML ভিত্তিক ফরম্যাটের মতো সহজে অ্যাক্সেসযোগ্য নয়।

DOC এবং DOCX ফরম্যাটের তুলনা

বৈশিষ্ট্যDOC (Word 97-2003)DOCX (Word 2007+)
ফাইল ফরম্যাটবাইনারি ফরম্যাটXML ভিত্তিক ফরম্যাট
ফরম্যাটিংসীমিতউন্নত এবং কাস্টমাইজযোগ্য
টেবিল, ছবি, চার্টসীমিতসম্পূর্ণ সমর্থন
এডিটিং এবং প্রসেসিংসহজ নয়, বাইনারিসহজ, XML ভিত্তিক
ফাইল সাইজছোট কিন্তু কম কার্যকরীবড়, তবে আরও কার্যকরী
গ্রাফিক্স এবং অ্যানিমেশনসীমিতসমর্থিত
পারফরম্যান্সতুলনামূলকভাবে ধীরদ্রুত এবং কার্যকরী

DOC এবং DOCX ফাইল ম্যানিপুলেশন

Apache POI ব্যবহার করে আপনি .doc এবং .docx ফাইলগুলোকে খুব সহজেই ম্যানিপুলেট করতে পারেন। নিম্নলিখিত উদাহরণ দেখানো হলো:

DOCX ফাইল পড়া এবং টেক্সট যোগ করা (XWPF):

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.*;

public class WordFileExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("input.docx")) {
            XWPFDocument document = new XWPFDocument(fis);
            XWPFParagraph paragraph = document.createParagraph();
            XWPFRun run = paragraph.createRun();
            run.setText("এটি একটি নতুন টেক্সট।");

            try (FileOutputStream fos = new FileOutputStream("output.docx")) {
                document.write(fos);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

DOC ফাইল পড়া এবং টেক্সট ম্যানিপুলেশন (HWPF):

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import java.io.*;

public class WordFileExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("input.doc")) {
            HWPFDocument document = new HWPFDocument(fis);
            Range range = document.getRange();
            System.out.println("Document Text: " + range.text());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Apache POI .doc এবং .docx ফরম্যাটের ফাইল ম্যানিপুলেশনে শক্তিশালী টুল হিসেবে কাজ করে। যেখানে XWPF আধুনিক .docx ফাইল ফরম্যাটের জন্য একটি উন্নত এবং নমনীয় লাইব্রেরি, HWPF পুরনো .doc ফাইল ফরম্যাটের জন্য ব্যবহৃত হয়। .docx ফরম্যাটটি XML ভিত্তিক হওয়ায় অনেক বেশি ফিচার এবং সহজ প্রসেসিং সমর্থন করে, যেখানে .doc বাইনারি ফরম্যাট হওয়ায় এর কিছু সীমাবদ্ধতা রয়েছে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion